home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / share / aclocal / visibility.m4 < prev    next >
Encoding:
M4 Source File  |  2010-09-19  |  3.2 KB  |  75 lines

  1. # visibility.m4 serial 3 (gettext-0.18)
  2. dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
  3. dnl This file is free software; the Free Software Foundation
  4. dnl gives unlimited permission to copy and/or distribute it,
  5. dnl with or without modifications, as long as this notice is preserved.
  6.  
  7. dnl From Bruno Haible.
  8.  
  9. dnl Tests whether the compiler supports the command-line option
  10. dnl -fvisibility=hidden and the function and variable attributes
  11. dnl __attribute__((__visibility__("hidden"))) and
  12. dnl __attribute__((__visibility__("default"))).
  13. dnl Does *not* test for __visibility__("protected") - which has tricky
  14. dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
  15. dnl MacOS X.
  16. dnl Does *not* test for __visibility__("internal") - which has processor
  17. dnl dependent semantics.
  18. dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
  19. dnl "really only recommended for legacy code".
  20. dnl Set the variable CFLAG_VISIBILITY.
  21. dnl Defines and sets the variable HAVE_VISIBILITY.
  22.  
  23. AC_DEFUN([gl_VISIBILITY],
  24. [
  25.   AC_REQUIRE([AC_PROG_CC])
  26.   CFLAG_VISIBILITY=
  27.   HAVE_VISIBILITY=0
  28.   if test -n "$GCC"; then
  29.     dnl First, check whether -Werror can be added to the command line, or
  30.     dnl whether it leads to an error because of some other option that the
  31.     dnl user has put into $CC $CFLAGS $CPPFLAGS.
  32.     AC_MSG_CHECKING([whether the -Werror option is usable])
  33.     AC_CACHE_VAL([gl_cv_cc_vis_werror], [
  34.       gl_save_CFLAGS="$CFLAGS"
  35.       CFLAGS="$CFLAGS -Werror"
  36.       AC_TRY_COMPILE([], [],
  37.         [gl_cv_cc_vis_werror=yes],
  38.         [gl_cv_cc_vis_werror=no])
  39.       CFLAGS="$gl_save_CFLAGS"])
  40.     AC_MSG_RESULT([$gl_cv_cc_vis_werror])
  41.     dnl Now check whether visibility declarations are supported.
  42.     AC_MSG_CHECKING([for simple visibility declarations])
  43.     AC_CACHE_VAL([gl_cv_cc_visibility], [
  44.       gl_save_CFLAGS="$CFLAGS"
  45.       CFLAGS="$CFLAGS -fvisibility=hidden"
  46.       dnl We use the option -Werror and a function dummyfunc, because on some
  47.       dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
  48.       dnl "visibility attribute not supported in this configuration; ignored"
  49.       dnl at the first function definition in every compilation unit, and we
  50.       dnl don't want to use the option in this case.
  51.       if test $gl_cv_cc_vis_werror = yes; then
  52.         CFLAGS="$CFLAGS -Werror"
  53.       fi
  54.       AC_TRY_COMPILE(
  55.         [extern __attribute__((__visibility__("hidden"))) int hiddenvar;
  56.          extern __attribute__((__visibility__("default"))) int exportedvar;
  57.          extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
  58.          extern __attribute__((__visibility__("default"))) int exportedfunc (void);
  59.          void dummyfunc (void) {}],
  60.         [],
  61.         [gl_cv_cc_visibility=yes],
  62.         [gl_cv_cc_visibility=no])
  63.       CFLAGS="$gl_save_CFLAGS"])
  64.     AC_MSG_RESULT([$gl_cv_cc_visibility])
  65.     if test $gl_cv_cc_visibility = yes; then
  66.       CFLAG_VISIBILITY="-fvisibility=hidden"
  67.       HAVE_VISIBILITY=1
  68.     fi
  69.   fi
  70.   AC_SUBST([CFLAG_VISIBILITY])
  71.   AC_SUBST([HAVE_VISIBILITY])
  72.   AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
  73.     [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
  74. ])
  75.